/**
 * @author Gene
 * @age 永远18岁的美少年
 * @Email yangjianyun@58.com
 * @date 2021-12-12 16:05:54
 * @Description compose 组合泛型
 *
 */
interface ICalculate {
  <T extends string | number>(a: T, b: T): void;
}

/**
 * @param a string 是 (string|number) 的子类型
 * @param b  (string|number) 是 (string|number|boolean) 的子类型
 */
let sum: ICalculate = function <T extends string | number>(a: T, b: T): void {};
sum<string | number>(1, 2);
